<template>
  <!-- 精准定位 -->
  <div ref="mapContainer" style="width: 100%; height: calc(100vh - 85px)"></div>
</template>

<script setup>
import AMapLoader from "@amap/amap-jsapi-loader";

const apiKey = "272fb8f8184785b458a7fc013c9aee43"; // 替换为你的高德地图API Key
const mapContainer = ref(null);
let mapInstance;
let geolocationService;

async function initMap() {
  // 安全密钥
  window._AMapSecurityConfig = {
    securityJsCode: "c1b9edfed89e7fbaa5486856149b9b6f",
  };
  const AMap = await AMapLoader.load({
    key: apiKey,
    version: "2.0",
    plugins: ["AMap.Geolocation"],
  });

  mapInstance = new AMap.Map(mapContainer.value, {
    zoom: 10,
  });

  // 初始化定位服务
  geolocationService = new AMap.Geolocation({
    enableHighAccuracy: true, // 是否使用高精度定位，默认:true
    timeout: 10000, // 超过10秒后停止定位，默认：无穷大
    maximumAge: 0, // 定位结果缓存0毫秒，默认：0
    convert: true, // 自动偏移坐标，偏移后的坐标为高德坐标，默认：true
    showButton: true, // 显示定位按钮，默认：true
    buttonPosition: "LB", // 定位按钮停靠位置，默认：'LB'，左下角
    buttonOffset: new AMap.Pixel(10, 20), // 定位按钮与设置的停靠位置的偏移量，默认：Pixel(10, 20)
    zoomToAccuracy: true, // 定位成功后调整地图视野范围使定位点及精度范围显示在视口中，默认：false
    extensions: "all", // 默认：'all'
  });

  // 添加定位控件到地图上
  mapInstance.addControl(geolocationService);

  // 开始定位
  // geolocationService.getCurrentPosition((status, result) => {
  // 	if (status === 'complete') {
  // 		onComplete(result)
  // 	} else {
  // 		onError(result)
  // 	}
  // });

  function onComplete(data) {
    // data是具体的定位信息
    ElMessage.success("地址信息更新成功");
  }

  function onError(data) {
    // 定位出错
    ElMessage.error(`地址信息更新失败: ${data.message}`);
  }
}

onMounted(async () => {
  await initMap();
});

onUnmounted(() => {
  mapInstance?.destroy();

  if (geolocationService) {
    geolocationService = null;
  }
});
</script>
